@echo off
color 0A
chcp 65001 >nul
echo ========================================
echo Python 3.13 专用打包脚本
echo 当前目录: %CD%
echo Python版本: 
python --version
echo ========================================

echo.
echo 第一步：修复Python 3.13兼容性问题...
python fix_py313_compatibility.py
color 0A
if errorlevel 1 (
    echo 兼容性修复失败，但继续尝试打包...
)

echo.
echo 第二步：验证关键依赖是否正确安装...
echo 测试NumPy...
python -c "import numpy as np; print(f'✅ NumPy {np.__version__} 可用')" 2>nul || (
    echo ❌ NumPy不可用，尝试直接安装NumPy 2.x...
    python -m pip install "numpy>=2.1.0" --no-cache-dir
)

echo 测试PyQt5...
python -c "import PyQt5; print('✅ PyQt5可用')" 2>nul || (
    echo ❌ PyQt5不可用
    exit /b 1
)

echo.
echo 第三步：清理旧的构建文件...
if exist "build" rd /s /q "build"
if exist "dist" rd /s /q "dist"
color 0A

echo.
echo 第四步：尝试PyInstaller打包...
python -c "import PyInstaller; print('PyInstaller可用')" 2>nul
if errorlevel 1 (
    echo PyInstaller不可用，跳转到cx_Freeze...
    goto USE_CXFREEZE
)

echo 使用PyInstaller进行打包...
python -m PyInstaller ^
    --onefile ^
    --windowed ^
    --exclude-module distutils ^
    --exclude-module tkinter ^
    --exclude-module test ^
    --add-data "frame_schema.xml;." ^
    --hidden-import "PyQt5" ^
    --hidden-import "PyQt5.sip" ^
    --hidden-import "numpy" ^
    --hidden-import "pandas" ^
    --hidden-import "matplotlib.backends.backend_qt5agg" ^
    --hidden-import "openpyxl" ^
    --hidden-import "psutil" ^
    --name "成帧数据应用软件_PyInstaller" ^
    main.py

if exist "dist\成帧数据应用软件_PyInstaller.exe" (
    echo ✅ PyInstaller打包成功！
    echo 文件位置: %CD%\dist\成帧数据应用软件_PyInstaller.exe
    goto END
) else (
    echo ❌ PyInstaller打包失败，尝试cx_Freeze...
)

:USE_CXFREEZE
echo.
echo 第五步：使用cx_Freeze打包...
python -c "import cx_Freeze; print('cx_Freeze可用')" 2>nul
if errorlevel 1 (
    echo 安装cx_Freeze...
    python -m pip install "cx_Freeze>=6.15.0" --no-cache-dir
)

if not exist "setup_cxfreeze.py" (
    echo 创建cx_Freeze配置文件...
    python fix_py313_compatibility.py
)

echo 执行cx_Freeze打包...
python setup_cxfreeze.py build
color 0A

if exist "build\exe.*\成帧数据应用软件.exe" (
    echo ✅ cx_Freeze打包成功！
    echo 文件位置: %CD%\build\exe.*\成帧数据应用软件.exe
    
    REM 复制到dist目录方便查找
    if not exist "dist" mkdir "dist"
    for /d %%d in (build\exe.*) do (
        copy "%%d\成帧数据应用软件.exe" "dist\成帧数据应用软件_cxFreeze.exe"
        echo 已复制到: %CD%\dist\成帧数据应用软件_cxFreeze.exe
    )
) else (
    echo ❌ cx_Freeze打包也失败了
    echo.
    echo 请尝试以下解决方案：
    echo 1. 降级到Python 3.11或3.12:
    echo    推荐使用conda: conda install python=3.11
    echo 2. 使用虚拟环境:
    echo    python -m venv venv_py311
    echo    venv_py311\Scripts\activate
    echo    pip install -r requirements.txt
    echo 3. 在Docker中打包：
    echo    使用Ubuntu 20.04 + Python 3.11环境
    goto END
)

:END
echo.
echo ========================================
echo 打包过程完成
echo.
echo 如果成功生成exe文件，请测试以下功能：
echo 1. 双击exe文件是否能正常启动
echo 2. 加载测试数据文件
echo 3. 验证主要功能是否正常
echo.
echo 如果遇到运行时错误，可能需要：
echo 1. 在目标机器上安装Visual C++ Redistributable
echo 2. 确保没有缺失DLL文件
echo ========================================

echo.
echo 按任意键继续...
pause
color 0A 